home *** CD-ROM | disk | FTP | other *** search
- package koala.dynamicjava.interpreter.modifier;
-
- import java.lang.reflect.Field;
- import java.util.LinkedList;
- import java.util.List;
- import koala.dynamicjava.interpreter.context.Context;
- import koala.dynamicjava.interpreter.error.CatchedExceptionError;
- import koala.dynamicjava.tree.ObjectFieldAccess;
- import koala.dynamicjava.tree.visitor.Visitor;
-
- public class ObjectFieldModifier extends LeftHandSideModifier {
- protected Field field;
- protected ObjectFieldAccess node;
- protected Object fieldObject;
- protected List fields = new LinkedList();
-
- public Object prepare(Visitor var1, Context var2) {
- this.fields.add(0, this.fieldObject);
- this.fieldObject = this.node.getExpression().acceptVisitor(var1);
-
- try {
- return this.field.get(this.fieldObject);
- } catch (Exception var4) {
- throw new CatchedExceptionError(var4, this.node);
- }
- }
-
- public void modify(Context var1, Object var2) {
- try {
- this.field.set(this.fieldObject, var2);
- } catch (Exception var8) {
- throw new CatchedExceptionError(var8, this.node);
- } finally {
- this.fieldObject = this.fields.remove(0);
- }
-
- }
-
- public ObjectFieldModifier(Field var1, ObjectFieldAccess var2) {
- this.field = var1;
- this.node = var2;
- }
- }
-